package com.study.csc.a15threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author csc
 * @Date 2023/10/24 10:29
 * @PackageName:com.study.csc.a15threadpool
 * @ClassName: MyThreadPoolDemo
 * @Description: 线程池对象
 * @Version 1.0
 */
public class MyThreadPoolDemo {

    public static void main(String[] args) throws InterruptedException {

        /**
         *  public static ExecutorService newCachedThreadPool()      创建一个没有上线的线程池
         *  public static ExecutorService newFixedThreadPool(int nThreads)      创建有上限的线程池
         *
         *  线程池主要核心原理
         *    1. 创建一个池子,池子中是空的
         *
         *    2. 提交任务时,池子会创建新的线程对象,任务执行完毕,下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可
         *
         *    3. 但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就回排队等待
         */

        //1.获取线程池
        ExecutorService pool1 = Executors.newFixedThreadPool(3);

        //2.提交任务
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());


        //3.销毁线程池
       // pool1.shutdown();



    }




}
